#ifndef ANIMATIONSTACKEDWIDGET_H
#define ANIMATIONSTACKEDWIDGET_H

#include <QStackedWidget>
#include<QPropertyAnimation>
#include<QPainter>
#include<QTransform>
// class animationStackedWidget : public QStackedWidget
// {   //Qt提供的属性系统，独立于编辑器和平台的库
//     //Qt属性是基于元数据对象系统 信号和槽
//     //需要用MOC进行编译，需要基础object类，因此在需要重新构建才能调用这个宏
//      Q_OBJECT  // 这个必须要有,
//      Q_PROPERTY(float rotateVal READ rotateVal WRITE setRotateVal)
// public:
//     animationStackedWidget(QWidget *parent=0);
//     ~animationStackedWidget();
//     void animation(int pageIndex);

//     float rotateVal()
//     {
//         return iRotateVal;
//     }
//     void setRotateVal(float val)
//     {
//         iRotateVal=val;
//     }
//     float StartVal()
//     {
//         return m_startVal;
//     }
//     void setStartVal(float val)
//     {
//         m_startVal=val;
//     }
//     float EndVal()
//     {
//         return m_endVal;
//     }
//     void setEndVal(float val)
//     {
//         m_endVal=val;
//     }

// private:
//     float iRotateVal;//旋转值
//     int m_startVal;
//     int m_endVal;
//     int m_nextPageIndex;//下一页
// private slots:
//     void OnValuechanged(const QVariant &value);
//     void OnFinished();
// protected:
//     void paintEvent(QPaintEvent *ev);
//     bool m_isAnimating;
// };


class animationStackedWidget:public QStackedWidget{
    Q_OBJECT  // 这个必须要有,
       // Q_PROPERTY(float rotateVal READ rotateVal WRITE setRotateVal)
public:
    animationStackedWidget(QWidget *parent=nullptr);
    ~animationStackedWidget();
    void animation(int pagenIdex);//用于操作旋转的参数设置,并且传递当前的页标，用于对指定的页表进行操作

    float roateVal()//获取当前旋转的度数
    {
        return iRotateVal;
    }
    void setRoateVal(float val)//根据旋转的度数实时更改参数
    {
        iRotateVal=val;
    }
    int StartVal()
    {
        return m_startVal;
    }
    void setStartVal(int val){
        m_startVal=val;
    }
    int EndVal()
    {
        return m_endVal;
    }
    void setEndVal(int val)
    {
        m_endVal=val;
    }
private slots:
    void OnValuehanged(const QVariant &value);//旋转时触发的槽函数，并且获取旋转的值
    void OnFinished();//结束后的操作
protected :
    void paintEvent(QPaintEvent*ev);
private:
    float iRotateVal;//旋转的度数
    int  m_startVal;//旋转起始度数
    int  m_endVal;//旋转结束度数
    bool m_isAnimating;//旋转进行中，目的针对旋转中，操作再旋转不可用
    int m_nextPageIndex;//用于换页的标识，0标识第一页，1标识第二页。
};

#endif // ANIMATIONSTACKEDWIDGET_H
